home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1999 #2 / Amiga Plus CD - 1999 - No. 2.iso / Magazin / WhatsRelated / WhatsRelated.awebrx < prev    next >
Text File  |  1998-10-27  |  2KB  |  104 lines

  1. /* What's Related á la Netscape Communicator 4.06/4.5 */
  2.  
  3. /*
  4.    Q&D AWeb script by Martin Blom, 1998-10-28.
  5.    Public Domain. No support, no documentation, no updates.
  6. */
  7.  
  8. name  = "What's Related"
  9. nsurl1 = "http://www-rl4.netscape.com"
  10. nsurl2 = "http://cgi.netscape.com/cgi-bin/rlcgi.cgi"
  11.  
  12. ports = SHOW('P')
  13. PARSE VAR ports dummy 'AWEB.' portnr . /* note the trailing period! */
  14. ADDRESS VALUE 'AWEB.' || portnr
  15.  
  16. OPTIONS RESULTS
  17.  
  18. GET ACTIVEPORT
  19. ADDRESS VALUE RESULT
  20.  
  21. GET URL VAR url
  22.  
  23. /* Find the last "http://" and remove it and everything before it */
  24.  
  25. lastpos = LASTPOS( "http://", url )
  26. url = RIGHT( url, LENGTH( url ) - lastpos + 1 )
  27.  
  28.  
  29. fullurl = url
  30.  
  31. IF LEFT( url, 7 ) ~= "http://" THEN DO
  32.  REQUEST 'TITLE "'name'" BODY "'name' only works on HTTP documents." GADGETS "OK"'
  33.  EXIT
  34. END
  35.  
  36. /* Cut the "http://" */
  37.  
  38. url = RIGHT( url, LENGTH( url ) - 7 )
  39.  
  40.  
  41. /* Cut everything behind "?", "#" or "@" */
  42.  
  43. lastpos  = INDEX( url, "?" )
  44. lastpos2 = INDEX( url, "#" )
  45. lastpos3 = INDEX( url, "@" )
  46.  
  47. IF lastpos = 0 THEN lastpos = lastpos2
  48. IF lastpos = 0 THEN lastpos = lastpos3
  49. IF lastpos2 ~= 0 THEN lastpos = MIN( lastpos, lastpos2 )
  50. IF lastpos3 ~= 0 THEN lastpos = MIN( lastpos, lastpos3 )
  51.  
  52. IF lastpos ~= 0 THEN url = LEFT( url, lastpos )
  53.  
  54. /* Now ask the server */
  55.  
  56. LOAD 'URL "'nsurl1 || '/wtgn?' || url || '" RELOAD SAVEAS "T:WhatsRelated.tmp" NOICON'
  57. WAIT 'URL "'nsurl1 || '/wtgn?' || url || '"'
  58.  
  59. /* Semi-parse the XML response */
  60.  
  61. IF OPEN( rdf, "T:WhatsRelated.tmp", "READ" ) THEN DO
  62.  body    = ""
  63.  gadgets = ""
  64.  urls.   = ""
  65.  counter = 1
  66.  
  67.  DO WHILE EOF( rdf ) = 0
  68.   line = READLN( rdf )
  69.  
  70.   IF LEFT( line, 7 ) = "<child " THEN DO
  71.    CALL HandleChild( line )
  72.   END
  73.  
  74.  END
  75.  CALL CLOSE( rdf )
  76.  ADDRESS COMMAND "Delete T:WhatsRelated.tmp QUIET"
  77.  
  78.  gadgets = gadgets || "D|X"
  79.  urls.counter = nsurl2 || "?URL=" || fullurl
  80.  
  81.  result = 0
  82.  REQUEST 'TITLE "'name'" BODY "'body'" GADGETS "'gadgets'"'
  83.  
  84.  IF result ~= 0 THEN OPEN 'URL "'urls.result || '"'
  85. END
  86.  
  87. EXIT
  88.  
  89. HandleChild: PROCEDURE EXPOSE body gadgets urls. counter
  90.  PARSE ARG line
  91.  PARSE VAR line . 'href="' href '"' .
  92.  PARSE VAR line . 'name="' name '"' .
  93.  PARSE VAR line . 'instanceOf="' instanceOf '"' .
  94.  
  95.  IF instanceOf ~= "" THEN body = body || "*N"
  96.  ELSE IF href ~= "" & name ~= "" THEN DO
  97.   body = body || counter || ": " || name || "*N"
  98.   gadgets = gadgets || counter || "|"
  99.   urls.counter = href
  100.   counter = counter + 1
  101.  END
  102.  
  103.  RETURN
  104.